"use strict";
// 解决异步：
// interface AutoProps {
//   success: (str: string) => void
// }
// 第一种解决方案：
// function auto({ success }: AutoProps) {
//   setTimeout(() => {
//     success('1')
//   }, 0)
// }
// auto({
//   success: (res) => {
//     console.log('res:', res)
//   }
// })
// function auto(): Promise<unknown> {
//   return new Promise((resolve, reject) => {
//     setTimeout(() => {
//       resolve('1')
//     }, 0)
//   })
// }
// async function AsyncFn() {
//   const data = await auto()
//   console.log('dat:', data)
// }
// AsyncFn()
// function *Generator():any {
//   let data = yield auto()
//   let data1 = yield console.log(1)
//   console.log('data:', data1, data)
//   // return data;
// }
// let it = Generator()
// console.log(it.next())
// auto().then(res => {
//   console.log('1:', res)
// })
// thun / saga / async;
// 异步依赖：
function getUrl(url, fn) {
    fetch(url).then(res => res.json()).then(data => {
        fn(data);
    });
}
// 回调地狱
// getUrl('./data/data1.json', (data) => {
//   getUrl(`./data/${data.name}`, (data) => {
//     getUrl(`./data/${data.name}`, (res) => {
//       console.log('data:', res)
//       getUrl(`./data/${data.name}`, (res) => {
//         console.log('data:', res)
//         getUrl(`./data/${data.name}`, (res) => {
//           console.log('data:', res)
//           getUrl(`./data/${data.name}`, (res) => {
//             console.log('data:', res)
//           })
//         })
//       })
//     })
//   })
// })
function getPromiseUrl(url) {
    return new Promise((resolve, reject) => {
        fetch(url).then(res => res.json())
            .then(data => {
            resolve(data);
        });
    });
}
// // promise将异步回调的return能力又恢复了；
// getPromiseUrl('./data/data1.json')
// .then((res:any) => {
//   return getPromiseUrl(`./data/${res.name}`)
// })
// .then((res:any) => {
//   return getPromiseUrl(`./data/${res.name}`)
// })
// .then(res => {
//   console.log('res:', res)
// })
// async function fetchUrl(params:string) {
//   await getPromiseUrl('./data/data1.json')
//   await getPromiseUrl('./data/data1.json')
//   await getPromiseUrl('./data/data1.json')
// }
// fetchUrl('')

// $on / $emit  mitt;
// 事件监听 dom更改

// window.addEventListener('click', () => {
//     console.log('dddd')
// })


// ;
// const fn = (() => {
//     let num = 10;
//     console.log('我是更改的数据:', 1);
//     setTimeout(() => {
//         num + 10;
//     }, 1000);
//     return {
//         on: function () {
//             console.log('num:', num);
//             return num;
//         }
//     };
// })();


// ;(() => {
//     console.log(fn.on(() => {
//     }), 'fn')
// })()
